package com.ycq.parser;

import com.ycq.parser.node.parser.ParserProvider;
import com.ycq.parser.node.parser.RadioQuestionParser;
import com.ycq.parser.node.parser.ShareOptionsParser;
import com.ycq.parser.node.parser.ShareQuestionParser;

import java.util.Arrays;
import java.util.List;

/**
 * 问题节点解析器
 *
 * @author ycq
 * @date 2025/9/24 14:59
 */
public class QuestionNodeParse {

    private static List<ParserProvider> PROVIDERS;

    static {
        PROVIDERS = Arrays.asList(
                new RadioQuestionParser(),
                new ShareQuestionParser(),
                new ShareOptionsParser()
        );
    }

    /**
     * 解析题库问题节点
     * @param questionItemLines 问题节点的文本行列表
     * @return 解析后的问题节点
     */
    public QuestionNode parse(List<String> questionItemLines, List<ImageInfo> imageInfoNode){

        for (ParserProvider provider : PROVIDERS) {
            // 选用解析器
            if (provider.hasSupport(questionItemLines)){
                return provider.parse(questionItemLines, imageInfoNode);
            }
        }
        throw new RuntimeException("未匹配到合适的解析器 >>> \n--------context------   \n"+ String.join("\n",questionItemLines)+"\n--------------");
    }
}
